package cn.kgc.ffzw.project.eat.src.main.java.com.kgc.kb05;

public class Collection {
    Entry[]entries;
    int size=0;//数组中有多少数据

    public Collection(){
        this(10);
    }

    public Collection(int size){

        entries=new Entry[size];
    }

    /**
     *
     * 清楚所有数据
     */
    public  void clean(){
        this.size=0;
        entries=new Entry[10];
    }

    /**
     * 根据数组下标获取数据
     * @param index
     * @return
     */

    public Object get(int index){
        return  new Object[]{entries[index].id,entries[index].value};
    }

    public Object remove(Object id){
        //找到对应的Entry
        Object obj=null;
        int index=0;
        for (int i = 0; i < size; i++) {
            if (entries[i].id == id) {
                index=i;
                obj=entries[i];
                break;
            }
        }
        //利用拷贝方法去除数值
        System.arraycopy(entries,index+1,entries,index,size-index-1);
        entries[size--]=null;
        return obj;
    }

    public int size(){
        return size;
    }

    /**
     * 向数组中添加一条数据
     */

    public void add(Object id,Object value){
        Entry entry = new Entry(id, value);
        //检测容量，不足再生成一个新数组
        capacity(size+1);
        //再把对象放到数组中
        entries[size++]=entry;
    }


    private void capacity(int newSize){
        if (newSize >entries.length) {
            int ns=newSize<<1;//相当于newSize*2
            //制造一个新数组，并把老数据导进去
            Entry []ets=new Entry[ns];
            System.arraycopy(entries,0,ets,0,size);
        }
    }
}
